{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Keras VGG16 for CIFAR10 test\n",
    "keras vgg16 CIFAR10 for cifar10 test."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import numpy as np\n",
    "import keras\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Activation\n",
    "from data_utils import *\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'\n",
    "\n",
    "import tensorflow as tf \n",
    "from keras import backend as k\n",
    "import os\n",
    "config = tf.ConfigProto()\n",
    "# config.gpu_options.per_process_gpu_memory_fraction = 0.1\n",
    "config.gpu_options.allow_growth = True\n",
    "k.tensorflow_backend.set_session(tf.Session(config=config))\n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CIFAR10 Training data shape: (50000, 32, 32, 3)\n",
      "CIFAR10 Training label shape (50000, 1)\n",
      "CIFAR10 Test data shape (10000, 32, 32, 3)\n",
      "CIFAR10 Test label shape (10000, 1)\n",
      "(40000, 32, 32, 3)\n"
     ]
    }
   ],
   "source": [
    "# get data\n",
    "cifar10_data = CIFAR10Data()\n",
    "x_train, y_train, x_test, y_test = cifar10_data.get_data(subtract_mean=True)\n",
    "\n",
    "num_train = int(x_train.shape[0] * 0.8)\n",
    "num_val = x_train.shape[0] - num_train\n",
    "mask = list(range(num_train, num_train+num_val))\n",
    "x_val = x_train[mask]\n",
    "y_val = y_train[mask]\n",
    "\n",
    "mask = list(range(num_train))\n",
    "x_train = x_train[mask]\n",
    "y_train = y_train[mask]\n",
    "print(x_train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_10 (InputLayer)        (None, 32, 32, 3)         0         \n",
      "_________________________________________________________________\n",
      "conv1-1 (Conv2D)             (None, 32, 32, 64)        1792      \n",
      "_________________________________________________________________\n",
      "bn1-1 (BatchNormalization)   (None, 32, 32, 64)        256       \n",
      "_________________________________________________________________\n",
      "relu1-1 (Activation)         (None, 32, 32, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv1-2 (Conv2D)             (None, 32, 32, 64)        36928     \n",
      "_________________________________________________________________\n",
      "bn1-2 (BatchNormalization)   (None, 32, 32, 64)        256       \n",
      "_________________________________________________________________\n",
      "relu1-2 (Activation)         (None, 32, 32, 64)        0         \n",
      "_________________________________________________________________\n",
      "pool1 (MaxPooling2D)         (None, 16, 16, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2-1 (Conv2D)             (None, 16, 16, 128)       73856     \n",
      "_________________________________________________________________\n",
      "bn2-1 (BatchNormalization)   (None, 16, 16, 128)       512       \n",
      "_________________________________________________________________\n",
      "relu2-1 (Activation)         (None, 16, 16, 128)       0         \n",
      "_________________________________________________________________\n",
      "conv2-2 (Conv2D)             (None, 16, 16, 128)       147584    \n",
      "_________________________________________________________________\n",
      "bn2-2 (BatchNormalization)   (None, 16, 16, 128)       512       \n",
      "_________________________________________________________________\n",
      "relu2-2 (Activation)         (None, 16, 16, 128)       0         \n",
      "_________________________________________________________________\n",
      "pool2 (MaxPooling2D)         (None, 8, 8, 128)         0         \n",
      "_________________________________________________________________\n",
      "conv3-1 (Conv2D)             (None, 8, 8, 256)         295168    \n",
      "_________________________________________________________________\n",
      "bn3-1 (BatchNormalization)   (None, 8, 8, 256)         1024      \n",
      "_________________________________________________________________\n",
      "relu3-1 (Activation)         (None, 8, 8, 256)         0         \n",
      "_________________________________________________________________\n",
      "conv3-2 (Conv2D)             (None, 8, 8, 256)         590080    \n",
      "_________________________________________________________________\n",
      "bn3-2 (BatchNormalization)   (None, 8, 8, 256)         1024      \n",
      "_________________________________________________________________\n",
      "relu3-2 (Activation)         (None, 8, 8, 256)         0         \n",
      "_________________________________________________________________\n",
      "conv3-3 (Conv2D)             (None, 8, 8, 256)         590080    \n",
      "_________________________________________________________________\n",
      "bn3-3 (BatchNormalization)   (None, 8, 8, 256)         1024      \n",
      "_________________________________________________________________\n",
      "relu3-3 (Activation)         (None, 8, 8, 256)         0         \n",
      "_________________________________________________________________\n",
      "pool3 (MaxPooling2D)         (None, 4, 4, 256)         0         \n",
      "_________________________________________________________________\n",
      "conv4-1 (Conv2D)             (None, 4, 4, 512)         1180160   \n",
      "_________________________________________________________________\n",
      "bn4-1 (BatchNormalization)   (None, 4, 4, 512)         2048      \n",
      "_________________________________________________________________\n",
      "relu4-1 (Activation)         (None, 4, 4, 512)         0         \n",
      "_________________________________________________________________\n",
      "conv4-2 (Conv2D)             (None, 4, 4, 512)         2359808   \n",
      "_________________________________________________________________\n",
      "bn4-2 (BatchNormalization)   (None, 4, 4, 512)         2048      \n",
      "_________________________________________________________________\n",
      "relu4-2 (Activation)         (None, 4, 4, 512)         0         \n",
      "_________________________________________________________________\n",
      "conv4-3 (Conv2D)             (None, 4, 4, 512)         2359808   \n",
      "_________________________________________________________________\n",
      "bn4-3 (BatchNormalization)   (None, 4, 4, 512)         2048      \n",
      "_________________________________________________________________\n",
      "relu4-3 (Activation)         (None, 4, 4, 512)         0         \n",
      "_________________________________________________________________\n",
      "pool4 (MaxPooling2D)         (None, 2, 2, 512)         0         \n",
      "_________________________________________________________________\n",
      "flatten (Flatten)            (None, 2048)              0         \n",
      "_________________________________________________________________\n",
      "fc6 (Dense)                  (None, 512)               1049088   \n",
      "_________________________________________________________________\n",
      "fc6-bn (BatchNormalization)  (None, 512)               2048      \n",
      "_________________________________________________________________\n",
      "fc6-relu (Activation)        (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "fc6-dropout (Dropout)        (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "fc7 (Dense)                  (None, 512)               262656    \n",
      "_________________________________________________________________\n",
      "fc7-bn (BatchNormalization)  (None, 512)               2048      \n",
      "_________________________________________________________________\n",
      "fc7-relu (Activation)        (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "fc7-dropout (Dropout)        (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "predictions (Dense)          (None, 10)                5130      \n",
      "=================================================================\n",
      "Total params: 8,966,986\n",
      "Trainable params: 8,959,562\n",
      "Non-trainable params: 7,424\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "from classifiers.vgg import VGGNet \n",
    "\n",
    "weight_decay = 5e-4\n",
    "lr = 1e-1\n",
    "num_classes = 10\n",
    "\n",
    "vgg = VGGNet(classes=num_classes, \n",
    "             input_shape=x_train.shape[1:], \n",
    "             weight_decay=weight_decay, \n",
    "             conv_block_num=4,\n",
    "             fc_layers=2,\n",
    "             fc_units=512\n",
    "             ) \n",
    "\n",
    "# sgd\n",
    "opt = keras.optimizers.SGD(lr=lr, momentum=0.9, nesterov=False)\n",
    "vgg.compile(loss='categorical_crossentropy', \n",
    "            optimizer=opt, \n",
    "            metrics=['accuracy'])\n",
    "vgg.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train with data augmentation\n",
      "Epoch 1/200\n",
      "313/313 [==============================] - 66s 210ms/step - loss: 5.7679 - acc: 0.1453 - val_loss: 10.4572 - val_acc: 0.1104\n",
      "Epoch 2/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 4.1786 - acc: 0.2248 - val_loss: 3.9182 - val_acc: 0.1537\n",
      "Epoch 3/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 3.1412 - acc: 0.3114 - val_loss: 2.8202 - val_acc: 0.2938\n",
      "Epoch 4/200\n",
      "313/313 [==============================] - 50s 159ms/step - loss: 2.3636 - acc: 0.3983 - val_loss: 2.1213 - val_acc: 0.4376\n",
      "Epoch 5/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 1.9158 - acc: 0.4820 - val_loss: 1.7849 - val_acc: 0.5327\n",
      "Epoch 6/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 1.6774 - acc: 0.5332 - val_loss: 1.5774 - val_acc: 0.5609\n",
      "Epoch 7/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 1.4760 - acc: 0.6030 - val_loss: 1.4848 - val_acc: 0.6071\n",
      "Epoch 8/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 1.3689 - acc: 0.6445 - val_loss: 1.5037 - val_acc: 0.5807\n",
      "Epoch 9/200\n",
      "313/313 [==============================] - 49s 155ms/step - loss: 1.3040 - acc: 0.6769 - val_loss: 1.7292 - val_acc: 0.5613\n",
      "Epoch 10/200\n",
      "313/313 [==============================] - 43s 139ms/step - loss: 1.2496 - acc: 0.7006 - val_loss: 1.5573 - val_acc: 0.5912\n",
      "Epoch 11/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 1.2209 - acc: 0.7191 - val_loss: 2.0861 - val_acc: 0.5578\n",
      "Epoch 12/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 1.2108 - acc: 0.7270 - val_loss: 1.3923 - val_acc: 0.6528\n",
      "Epoch 13/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 1.1851 - acc: 0.7416 - val_loss: 1.4359 - val_acc: 0.6518\n",
      "Epoch 14/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 1.1735 - acc: 0.7500 - val_loss: 1.6237 - val_acc: 0.6075\n",
      "Epoch 15/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 1.1713 - acc: 0.7546 - val_loss: 1.6406 - val_acc: 0.5974\n",
      "Epoch 16/200\n",
      "313/313 [==============================] - 46s 148ms/step - loss: 1.1686 - acc: 0.7583 - val_loss: 1.5488 - val_acc: 0.6440\n",
      "Epoch 17/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 1.1720 - acc: 0.7647 - val_loss: 2.2235 - val_acc: 0.4964\n",
      "Epoch 18/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 1.1581 - acc: 0.7724 - val_loss: 1.2499 - val_acc: 0.7337\n",
      "Epoch 19/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 1.1637 - acc: 0.7719 - val_loss: 1.6943 - val_acc: 0.5956\n",
      "Epoch 20/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 1.1540 - acc: 0.7792 - val_loss: 1.3644 - val_acc: 0.7109\n",
      "Epoch 21/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 1.1666 - acc: 0.7771 - val_loss: 1.9776 - val_acc: 0.5380\n",
      "Epoch 22/200\n",
      "313/313 [==============================] - 46s 145ms/step - loss: 1.1634 - acc: 0.7809 - val_loss: 1.5355 - val_acc: 0.6643\n",
      "Epoch 23/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 1.1565 - acc: 0.7865 - val_loss: 1.5190 - val_acc: 0.6566\n",
      "Epoch 24/200\n",
      "313/313 [==============================] - 46s 147ms/step - loss: 1.1632 - acc: 0.7834 - val_loss: 1.2776 - val_acc: 0.7415\n",
      "Epoch 25/200\n",
      "313/313 [==============================] - 44s 140ms/step - loss: 1.1620 - acc: 0.7862 - val_loss: 1.5651 - val_acc: 0.6649\n",
      "Epoch 26/200\n",
      "313/313 [==============================] - 44s 142ms/step - loss: 1.1601 - acc: 0.7904 - val_loss: 2.2078 - val_acc: 0.5214\n",
      "Epoch 27/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 1.1647 - acc: 0.7897 - val_loss: 1.6553 - val_acc: 0.6296\n",
      "Epoch 28/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 1.1677 - acc: 0.7913 - val_loss: 2.3613 - val_acc: 0.4829\n",
      "Epoch 29/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 1.1651 - acc: 0.7977 - val_loss: 2.3554 - val_acc: 0.5334\n",
      "Epoch 30/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 1.1643 - acc: 0.7993 - val_loss: 1.4107 - val_acc: 0.7137\n",
      "Epoch 31/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 1.1703 - acc: 0.7954 - val_loss: 1.5011 - val_acc: 0.6844\n",
      "Epoch 32/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 1.1686 - acc: 0.7995 - val_loss: 1.7426 - val_acc: 0.6463\n",
      "Epoch 33/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 1.1655 - acc: 0.7999 - val_loss: 1.9778 - val_acc: 0.5829\n",
      "Epoch 34/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 1.1760 - acc: 0.7984 - val_loss: 1.6906 - val_acc: 0.6379\n",
      "Epoch 35/200\n",
      "313/313 [==============================] - 53s 170ms/step - loss: 1.1697 - acc: 0.8036 - val_loss: 1.7812 - val_acc: 0.6082\n",
      "Epoch 36/200\n",
      "313/313 [==============================] - 49s 155ms/step - loss: 1.1730 - acc: 0.8022 - val_loss: 1.4987 - val_acc: 0.7044\n",
      "Epoch 37/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 1.1794 - acc: 0.8027 - val_loss: 3.1507 - val_acc: 0.3882\n",
      "Epoch 38/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 1.1708 - acc: 0.8054 - val_loss: 1.5001 - val_acc: 0.6860\n",
      "Epoch 39/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 1.1722 - acc: 0.8029 - val_loss: 1.4819 - val_acc: 0.7121\n",
      "Epoch 40/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 1.1791 - acc: 0.8081 - val_loss: 1.4666 - val_acc: 0.7008\n",
      "Epoch 41/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 1.1818 - acc: 0.8096 - val_loss: 2.0705 - val_acc: 0.5972\n",
      "Epoch 42/200\n",
      "313/313 [==============================] - 50s 159ms/step - loss: 1.1914 - acc: 0.8043 - val_loss: 2.2030 - val_acc: 0.5796\n",
      "Epoch 43/200\n",
      "313/313 [==============================] - 50s 160ms/step - loss: 1.1847 - acc: 0.8055 - val_loss: 1.6598 - val_acc: 0.6626\n",
      "Epoch 44/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 1.1905 - acc: 0.8061 - val_loss: 1.6204 - val_acc: 0.6739\n",
      "Epoch 45/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 1.1710 - acc: 0.8125 - val_loss: 1.7564 - val_acc: 0.6456\n",
      "Epoch 46/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 1.1873 - acc: 0.8055 - val_loss: 1.6592 - val_acc: 0.6516\n",
      "Epoch 47/200\n",
      "313/313 [==============================] - 49s 158ms/step - loss: 1.1824 - acc: 0.8093 - val_loss: 1.6837 - val_acc: 0.6475\n",
      "Epoch 48/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 1.1826 - acc: 0.8081 - val_loss: 1.5027 - val_acc: 0.7002\n",
      "Epoch 49/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 1.1928 - acc: 0.8090 - val_loss: 1.4651 - val_acc: 0.7242\n",
      "Epoch 50/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 1.1835 - acc: 0.8116 - val_loss: 2.1164 - val_acc: 0.5617\n",
      "Epoch 51/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 1.0330 - acc: 0.8597 - val_loss: 0.9506 - val_acc: 0.8761\n",
      "Epoch 52/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.8811 - acc: 0.8941 - val_loss: 0.8942 - val_acc: 0.8830\n",
      "Epoch 53/200\n",
      "313/313 [==============================] - 54s 172ms/step - loss: 0.8232 - acc: 0.9042 - val_loss: 0.8679 - val_acc: 0.8834\n",
      "Epoch 54/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 0.7664 - acc: 0.9126 - val_loss: 0.7921 - val_acc: 0.8994\n",
      "Epoch 55/200\n",
      "313/313 [==============================] - 47s 152ms/step - loss: 0.7246 - acc: 0.9173 - val_loss: 0.7687 - val_acc: 0.8974\n",
      "Epoch 56/200\n",
      "313/313 [==============================] - 46s 148ms/step - loss: 0.6813 - acc: 0.9246 - val_loss: 0.7741 - val_acc: 0.8945\n",
      "Epoch 57/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.6486 - acc: 0.9288 - val_loss: 0.7785 - val_acc: 0.8847\n",
      "Epoch 58/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 0.6232 - acc: 0.9292 - val_loss: 0.7360 - val_acc: 0.8895\n",
      "Epoch 59/200\n",
      "313/313 [==============================] - 44s 140ms/step - loss: 0.5929 - acc: 0.9340 - val_loss: 0.8091 - val_acc: 0.8696\n",
      "Epoch 60/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "313/313 [==============================] - 47s 150ms/step - loss: 0.5694 - acc: 0.9353 - val_loss: 0.7042 - val_acc: 0.8918\n",
      "Epoch 61/200\n",
      "313/313 [==============================] - 46s 147ms/step - loss: 0.5498 - acc: 0.9349 - val_loss: 0.7367 - val_acc: 0.8787\n",
      "Epoch 62/200\n",
      "313/313 [==============================] - 46s 147ms/step - loss: 0.5318 - acc: 0.9380 - val_loss: 0.6651 - val_acc: 0.8990\n",
      "Epoch 63/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.5192 - acc: 0.9375 - val_loss: 0.6598 - val_acc: 0.8965\n",
      "Epoch 64/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.5017 - acc: 0.9411 - val_loss: 0.7047 - val_acc: 0.8784\n",
      "Epoch 65/200\n",
      "313/313 [==============================] - 44s 140ms/step - loss: 0.4912 - acc: 0.9425 - val_loss: 0.7257 - val_acc: 0.8745\n",
      "Epoch 66/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.4780 - acc: 0.9434 - val_loss: 0.6833 - val_acc: 0.8813\n",
      "Epoch 67/200\n",
      "313/313 [==============================] - 44s 139ms/step - loss: 0.4748 - acc: 0.9414 - val_loss: 0.7081 - val_acc: 0.8773\n",
      "Epoch 68/200\n",
      "313/313 [==============================] - 43s 139ms/step - loss: 0.4628 - acc: 0.9444 - val_loss: 0.6115 - val_acc: 0.9012\n",
      "Epoch 69/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.4571 - acc: 0.9443 - val_loss: 0.7141 - val_acc: 0.8745\n",
      "Epoch 70/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.4502 - acc: 0.9450 - val_loss: 0.8069 - val_acc: 0.8470\n",
      "Epoch 71/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.4459 - acc: 0.9448 - val_loss: 0.6527 - val_acc: 0.8873\n",
      "Epoch 72/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.4411 - acc: 0.9446 - val_loss: 0.6976 - val_acc: 0.8821\n",
      "Epoch 73/200\n",
      "313/313 [==============================] - 50s 160ms/step - loss: 0.4392 - acc: 0.9443 - val_loss: 0.6837 - val_acc: 0.8795\n",
      "Epoch 74/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 0.4341 - acc: 0.9458 - val_loss: 0.6588 - val_acc: 0.8860\n",
      "Epoch 75/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.4395 - acc: 0.9436 - val_loss: 0.6950 - val_acc: 0.8724\n",
      "Epoch 76/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.4317 - acc: 0.9455 - val_loss: 0.7234 - val_acc: 0.8632\n",
      "Epoch 77/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.4344 - acc: 0.9448 - val_loss: 0.6333 - val_acc: 0.8879\n",
      "Epoch 78/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.4249 - acc: 0.9475 - val_loss: 0.9216 - val_acc: 0.8282\n",
      "Epoch 79/200\n",
      "313/313 [==============================] - 49s 158ms/step - loss: 0.4263 - acc: 0.9473 - val_loss: 0.7214 - val_acc: 0.8687\n",
      "Epoch 80/200\n",
      "313/313 [==============================] - 47s 152ms/step - loss: 0.4300 - acc: 0.9459 - val_loss: 0.6855 - val_acc: 0.8748\n",
      "Epoch 81/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.4282 - acc: 0.9471 - val_loss: 0.6294 - val_acc: 0.8915\n",
      "Epoch 82/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.4199 - acc: 0.9492 - val_loss: 0.6898 - val_acc: 0.8788\n",
      "Epoch 83/200\n",
      "313/313 [==============================] - 51s 162ms/step - loss: 0.4256 - acc: 0.9475 - val_loss: 0.6446 - val_acc: 0.8876\n",
      "Epoch 84/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.4244 - acc: 0.9490 - val_loss: 0.7544 - val_acc: 0.8586\n",
      "Epoch 85/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.4197 - acc: 0.9505 - val_loss: 0.7352 - val_acc: 0.8672\n",
      "Epoch 86/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.4287 - acc: 0.9481 - val_loss: 0.7916 - val_acc: 0.8550\n",
      "Epoch 87/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.4229 - acc: 0.9496 - val_loss: 0.8112 - val_acc: 0.8470\n",
      "Epoch 88/200\n",
      "313/313 [==============================] - 50s 158ms/step - loss: 0.4191 - acc: 0.9506 - val_loss: 0.7915 - val_acc: 0.8597\n",
      "Epoch 89/200\n",
      "313/313 [==============================] - 48s 155ms/step - loss: 0.4251 - acc: 0.9489 - val_loss: 0.7804 - val_acc: 0.8524\n",
      "Epoch 90/200\n",
      "313/313 [==============================] - 51s 162ms/step - loss: 0.4190 - acc: 0.9515 - val_loss: 0.7428 - val_acc: 0.8654\n",
      "Epoch 91/200\n",
      "313/313 [==============================] - 49s 158ms/step - loss: 0.4233 - acc: 0.9497 - val_loss: 0.7186 - val_acc: 0.8712\n",
      "Epoch 92/200\n",
      "313/313 [==============================] - 51s 162ms/step - loss: 0.4262 - acc: 0.9503 - val_loss: 0.7228 - val_acc: 0.8701\n",
      "Epoch 93/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.4207 - acc: 0.9514 - val_loss: 0.8330 - val_acc: 0.8492\n",
      "Epoch 94/200\n",
      "313/313 [==============================] - 50s 158ms/step - loss: 0.4202 - acc: 0.9514 - val_loss: 0.7172 - val_acc: 0.8778\n",
      "Epoch 95/200\n",
      "313/313 [==============================] - 50s 160ms/step - loss: 0.4253 - acc: 0.9515 - val_loss: 0.6538 - val_acc: 0.8863\n",
      "Epoch 96/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.4210 - acc: 0.9519 - val_loss: 0.7430 - val_acc: 0.8697\n",
      "Epoch 97/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.4233 - acc: 0.9528 - val_loss: 0.7941 - val_acc: 0.8592\n",
      "Epoch 98/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.4254 - acc: 0.9504 - val_loss: 0.7978 - val_acc: 0.8563\n",
      "Epoch 99/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.4244 - acc: 0.9523 - val_loss: 0.8000 - val_acc: 0.8548\n",
      "Epoch 100/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.4233 - acc: 0.9527 - val_loss: 0.7280 - val_acc: 0.8749\n",
      "Epoch 101/200\n",
      "313/313 [==============================] - 43s 139ms/step - loss: 0.3826 - acc: 0.9673 - val_loss: 0.5737 - val_acc: 0.9145\n",
      "Epoch 102/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 0.3432 - acc: 0.9802 - val_loss: 0.5652 - val_acc: 0.9162\n",
      "Epoch 103/200\n",
      "313/313 [==============================] - 44s 140ms/step - loss: 0.3357 - acc: 0.9817 - val_loss: 0.5650 - val_acc: 0.9180\n",
      "Epoch 104/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.3255 - acc: 0.9842 - val_loss: 0.5494 - val_acc: 0.9266\n",
      "Epoch 105/200\n",
      "313/313 [==============================] - 44s 142ms/step - loss: 0.3179 - acc: 0.9864 - val_loss: 0.5597 - val_acc: 0.9231\n",
      "Epoch 106/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.3123 - acc: 0.9878 - val_loss: 0.5704 - val_acc: 0.9207\n",
      "Epoch 107/200\n",
      "313/313 [==============================] - 44s 142ms/step - loss: 0.3071 - acc: 0.9890 - val_loss: 0.5697 - val_acc: 0.9207\n",
      "Epoch 108/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.3031 - acc: 0.9898 - val_loss: 0.5714 - val_acc: 0.9220\n",
      "Epoch 109/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.2993 - acc: 0.9906 - val_loss: 0.5647 - val_acc: 0.9227\n",
      "Epoch 110/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 0.2984 - acc: 0.9900 - val_loss: 0.5725 - val_acc: 0.9232\n",
      "Epoch 111/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.2950 - acc: 0.9908 - val_loss: 0.5737 - val_acc: 0.9206\n",
      "Epoch 112/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.2921 - acc: 0.9912 - val_loss: 0.5754 - val_acc: 0.9217\n",
      "Epoch 113/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 0.2896 - acc: 0.9917 - val_loss: 0.5650 - val_acc: 0.9257\n",
      "Epoch 114/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 0.2868 - acc: 0.9922 - val_loss: 0.5699 - val_acc: 0.9230\n",
      "Epoch 115/200\n",
      "313/313 [==============================] - 46s 147ms/step - loss: 0.2825 - acc: 0.9929 - val_loss: 0.5798 - val_acc: 0.9228\n",
      "Epoch 116/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 0.2816 - acc: 0.9924 - val_loss: 0.5757 - val_acc: 0.9240\n",
      "Epoch 117/200\n",
      "313/313 [==============================] - 50s 160ms/step - loss: 0.2782 - acc: 0.9933 - val_loss: 0.5831 - val_acc: 0.9243\n",
      "Epoch 118/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.2772 - acc: 0.9928 - val_loss: 0.5770 - val_acc: 0.9230\n",
      "Epoch 119/200\n",
      "313/313 [==============================] - 50s 159ms/step - loss: 0.2747 - acc: 0.9934 - val_loss: 0.5823 - val_acc: 0.9222\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 120/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.2735 - acc: 0.9932 - val_loss: 0.5814 - val_acc: 0.9226\n",
      "Epoch 121/200\n",
      "313/313 [==============================] - 53s 168ms/step - loss: 0.2691 - acc: 0.9941 - val_loss: 0.5825 - val_acc: 0.9235\n",
      "Epoch 122/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.2689 - acc: 0.9935 - val_loss: 0.5790 - val_acc: 0.9233\n",
      "Epoch 123/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2679 - acc: 0.9937 - val_loss: 0.5834 - val_acc: 0.9219\n",
      "Epoch 124/200\n",
      "313/313 [==============================] - 46s 148ms/step - loss: 0.2635 - acc: 0.9944 - val_loss: 0.5944 - val_acc: 0.9213\n",
      "Epoch 125/200\n",
      "313/313 [==============================] - 46s 148ms/step - loss: 0.2631 - acc: 0.9943 - val_loss: 0.5850 - val_acc: 0.9226\n",
      "Epoch 126/200\n",
      "313/313 [==============================] - 50s 161ms/step - loss: 0.2593 - acc: 0.9948 - val_loss: 0.5753 - val_acc: 0.9245\n",
      "Epoch 127/200\n",
      "313/313 [==============================] - 49s 158ms/step - loss: 0.2602 - acc: 0.9945 - val_loss: 0.5752 - val_acc: 0.9251\n",
      "Epoch 128/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.2586 - acc: 0.9943 - val_loss: 0.5795 - val_acc: 0.9240\n",
      "Epoch 129/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.2557 - acc: 0.9945 - val_loss: 0.5766 - val_acc: 0.9258\n",
      "Epoch 130/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.2555 - acc: 0.9944 - val_loss: 0.5969 - val_acc: 0.9210\n",
      "Epoch 131/200\n",
      "313/313 [==============================] - 48s 155ms/step - loss: 0.2536 - acc: 0.9943 - val_loss: 0.5693 - val_acc: 0.9265\n",
      "Epoch 132/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 0.2498 - acc: 0.9954 - val_loss: 0.5693 - val_acc: 0.9265\n",
      "Epoch 133/200\n",
      "313/313 [==============================] - 44s 139ms/step - loss: 0.2482 - acc: 0.9950 - val_loss: 0.5847 - val_acc: 0.9217\n",
      "Epoch 134/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 0.2474 - acc: 0.9951 - val_loss: 0.5839 - val_acc: 0.9228\n",
      "Epoch 135/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 0.2448 - acc: 0.9955 - val_loss: 0.5731 - val_acc: 0.9259\n",
      "Epoch 136/200\n",
      "313/313 [==============================] - 44s 139ms/step - loss: 0.2442 - acc: 0.9951 - val_loss: 0.5637 - val_acc: 0.9271\n",
      "Epoch 137/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 0.2431 - acc: 0.9950 - val_loss: 0.5745 - val_acc: 0.9261\n",
      "Epoch 138/200\n",
      "313/313 [==============================] - 43s 136ms/step - loss: 0.2416 - acc: 0.9949 - val_loss: 0.5701 - val_acc: 0.9252\n",
      "Epoch 139/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 0.2382 - acc: 0.9960 - val_loss: 0.5825 - val_acc: 0.9217\n",
      "Epoch 140/200\n",
      "313/313 [==============================] - 45s 145ms/step - loss: 0.2381 - acc: 0.9952 - val_loss: 0.5697 - val_acc: 0.9244\n",
      "Epoch 141/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.2368 - acc: 0.9955 - val_loss: 0.5796 - val_acc: 0.9229\n",
      "Epoch 142/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.2346 - acc: 0.9957 - val_loss: 0.5783 - val_acc: 0.9224\n",
      "Epoch 143/200\n",
      "313/313 [==============================] - 54s 173ms/step - loss: 0.2335 - acc: 0.9958 - val_loss: 0.5981 - val_acc: 0.9191\n",
      "Epoch 144/200\n",
      "313/313 [==============================] - 51s 162ms/step - loss: 0.2334 - acc: 0.9955 - val_loss: 0.5898 - val_acc: 0.9203\n",
      "Epoch 145/200\n",
      "313/313 [==============================] - 49s 155ms/step - loss: 0.2316 - acc: 0.9956 - val_loss: 0.5792 - val_acc: 0.9228\n",
      "Epoch 146/200\n",
      "313/313 [==============================] - 52s 166ms/step - loss: 0.2280 - acc: 0.9963 - val_loss: 0.5906 - val_acc: 0.9203\n",
      "Epoch 147/200\n",
      "313/313 [==============================] - 50s 159ms/step - loss: 0.2265 - acc: 0.9963 - val_loss: 0.5911 - val_acc: 0.9210\n",
      "Epoch 148/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.2268 - acc: 0.9960 - val_loss: 0.5818 - val_acc: 0.9213\n",
      "Epoch 149/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.2235 - acc: 0.9966 - val_loss: 0.5772 - val_acc: 0.9228\n",
      "Epoch 150/200\n",
      "313/313 [==============================] - 51s 162ms/step - loss: 0.2225 - acc: 0.9958 - val_loss: 0.5707 - val_acc: 0.9246\n",
      "Epoch 151/200\n",
      "313/313 [==============================] - 53s 168ms/step - loss: 0.2211 - acc: 0.9966 - val_loss: 0.5727 - val_acc: 0.9238\n",
      "Epoch 152/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.2216 - acc: 0.9966 - val_loss: 0.5689 - val_acc: 0.9240\n",
      "Epoch 153/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.2200 - acc: 0.9969 - val_loss: 0.5687 - val_acc: 0.9237\n",
      "Epoch 154/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.2191 - acc: 0.9973 - val_loss: 0.5676 - val_acc: 0.9241\n",
      "Epoch 155/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.2205 - acc: 0.9969 - val_loss: 0.5669 - val_acc: 0.9236\n",
      "Epoch 156/200\n",
      "313/313 [==============================] - 47s 149ms/step - loss: 0.2190 - acc: 0.9972 - val_loss: 0.5645 - val_acc: 0.9247\n",
      "Epoch 157/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.2181 - acc: 0.9973 - val_loss: 0.5647 - val_acc: 0.9251\n",
      "Epoch 158/200\n",
      "313/313 [==============================] - 49s 155ms/step - loss: 0.2198 - acc: 0.9967 - val_loss: 0.5671 - val_acc: 0.9239\n",
      "Epoch 159/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2195 - acc: 0.9971 - val_loss: 0.5676 - val_acc: 0.9242\n",
      "Epoch 160/200\n",
      "313/313 [==============================] - 45s 142ms/step - loss: 0.2186 - acc: 0.9971 - val_loss: 0.5653 - val_acc: 0.9250\n",
      "Epoch 161/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2176 - acc: 0.9978 - val_loss: 0.5651 - val_acc: 0.9249\n",
      "Epoch 162/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2178 - acc: 0.9972 - val_loss: 0.5650 - val_acc: 0.9247\n",
      "Epoch 163/200\n",
      "313/313 [==============================] - 46s 147ms/step - loss: 0.2183 - acc: 0.9971 - val_loss: 0.5655 - val_acc: 0.9245\n",
      "Epoch 164/200\n",
      "313/313 [==============================] - 48s 153ms/step - loss: 0.2172 - acc: 0.9975 - val_loss: 0.5652 - val_acc: 0.9249\n",
      "Epoch 165/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2170 - acc: 0.9977 - val_loss: 0.5665 - val_acc: 0.9240\n",
      "Epoch 166/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.2170 - acc: 0.9974 - val_loss: 0.5668 - val_acc: 0.9235\n",
      "Epoch 167/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.2169 - acc: 0.9978 - val_loss: 0.5666 - val_acc: 0.9233\n",
      "Epoch 168/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.2164 - acc: 0.9974 - val_loss: 0.5678 - val_acc: 0.9244\n",
      "Epoch 169/200\n",
      "313/313 [==============================] - 49s 157ms/step - loss: 0.2161 - acc: 0.9978 - val_loss: 0.5648 - val_acc: 0.9251\n",
      "Epoch 170/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 0.2175 - acc: 0.9969 - val_loss: 0.5681 - val_acc: 0.9248\n",
      "Epoch 171/200\n",
      "313/313 [==============================] - 45s 142ms/step - loss: 0.2159 - acc: 0.9978 - val_loss: 0.5650 - val_acc: 0.9252\n",
      "Epoch 172/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.2150 - acc: 0.9980 - val_loss: 0.5653 - val_acc: 0.9251\n",
      "Epoch 173/200\n",
      "313/313 [==============================] - 47s 150ms/step - loss: 0.2152 - acc: 0.9976 - val_loss: 0.5636 - val_acc: 0.9247\n",
      "Epoch 174/200\n",
      "313/313 [==============================] - 49s 156ms/step - loss: 0.2147 - acc: 0.9980 - val_loss: 0.5632 - val_acc: 0.9256\n",
      "Epoch 175/200\n",
      "313/313 [==============================] - 47s 151ms/step - loss: 0.2151 - acc: 0.9977 - val_loss: 0.5635 - val_acc: 0.9252\n",
      "Epoch 176/200\n",
      "313/313 [==============================] - 44s 140ms/step - loss: 0.2148 - acc: 0.9977 - val_loss: 0.5611 - val_acc: 0.9263\n",
      "Epoch 177/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.2158 - acc: 0.9973 - val_loss: 0.5611 - val_acc: 0.9265\n",
      "Epoch 178/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.2137 - acc: 0.9982 - val_loss: 0.5626 - val_acc: 0.9258\n",
      "Epoch 179/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "313/313 [==============================] - 47s 149ms/step - loss: 0.2147 - acc: 0.9979 - val_loss: 0.5623 - val_acc: 0.9257\n",
      "Epoch 180/200\n",
      "313/313 [==============================] - 43s 138ms/step - loss: 0.2151 - acc: 0.9976 - val_loss: 0.5622 - val_acc: 0.9257\n",
      "Epoch 181/200\n",
      "313/313 [==============================] - 42s 134ms/step - loss: 0.2129 - acc: 0.9981 - val_loss: 0.5623 - val_acc: 0.9256\n",
      "Epoch 182/200\n",
      "313/313 [==============================] - 40s 129ms/step - loss: 0.2147 - acc: 0.9976 - val_loss: 0.5658 - val_acc: 0.9254\n",
      "Epoch 183/200\n",
      "313/313 [==============================] - 42s 134ms/step - loss: 0.2145 - acc: 0.9975 - val_loss: 0.5645 - val_acc: 0.9244\n",
      "Epoch 184/200\n",
      "313/313 [==============================] - 43s 137ms/step - loss: 0.2133 - acc: 0.9980 - val_loss: 0.5642 - val_acc: 0.9247\n",
      "Epoch 185/200\n",
      "313/313 [==============================] - 44s 140ms/step - loss: 0.2130 - acc: 0.9981 - val_loss: 0.5634 - val_acc: 0.9254\n",
      "Epoch 186/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 0.2135 - acc: 0.9978 - val_loss: 0.5625 - val_acc: 0.9255\n",
      "Epoch 187/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.2130 - acc: 0.9978 - val_loss: 0.5634 - val_acc: 0.9252\n",
      "Epoch 188/200\n",
      "313/313 [==============================] - 44s 142ms/step - loss: 0.2139 - acc: 0.9976 - val_loss: 0.5646 - val_acc: 0.9252\n",
      "Epoch 189/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 0.2118 - acc: 0.9983 - val_loss: 0.5639 - val_acc: 0.9261\n",
      "Epoch 190/200\n",
      "313/313 [==============================] - 43s 139ms/step - loss: 0.2126 - acc: 0.9978 - val_loss: 0.5610 - val_acc: 0.9268\n",
      "Epoch 191/200\n",
      "313/313 [==============================] - 46s 148ms/step - loss: 0.2119 - acc: 0.9981 - val_loss: 0.5630 - val_acc: 0.9261\n",
      "Epoch 192/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.2131 - acc: 0.9974 - val_loss: 0.5624 - val_acc: 0.9259\n",
      "Epoch 193/200\n",
      "313/313 [==============================] - 45s 143ms/step - loss: 0.2119 - acc: 0.9976 - val_loss: 0.5604 - val_acc: 0.9276\n",
      "Epoch 194/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2120 - acc: 0.9979 - val_loss: 0.5623 - val_acc: 0.9267\n",
      "Epoch 195/200\n",
      "313/313 [==============================] - 48s 154ms/step - loss: 0.2121 - acc: 0.9977 - val_loss: 0.5609 - val_acc: 0.9267\n",
      "Epoch 196/200\n",
      "313/313 [==============================] - 44s 141ms/step - loss: 0.2115 - acc: 0.9982 - val_loss: 0.5616 - val_acc: 0.9261\n",
      "Epoch 197/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 0.2121 - acc: 0.9977 - val_loss: 0.5610 - val_acc: 0.9263\n",
      "Epoch 198/200\n",
      "313/313 [==============================] - 46s 146ms/step - loss: 0.2116 - acc: 0.9980 - val_loss: 0.5621 - val_acc: 0.9257\n",
      "Epoch 199/200\n",
      "313/313 [==============================] - 45s 144ms/step - loss: 0.2118 - acc: 0.9980 - val_loss: 0.5620 - val_acc: 0.9259\n",
      "Epoch 200/200\n",
      "313/313 [==============================] - 48s 152ms/step - loss: 0.2105 - acc: 0.9983 - val_loss: 0.5618 - val_acc: 0.9257\n",
      "CPU times: user 2h 31min 51s, sys: 6min 9s, total: 2h 38min 1s\n",
      "Wall time: 2h 37min 3s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "from keras.callbacks import ReduceLROnPlateau\n",
    "from keras.callbacks import LearningRateScheduler\n",
    "# fit data with data augmentation or not\n",
    "data_augmentation = True\n",
    "\n",
    "\n",
    "def lr_scheduler(epoch):\n",
    "    return lr * (0.1 ** (epoch // 50))\n",
    "\n",
    "reduce_lr = LearningRateScheduler(lr_scheduler)\n",
    "# reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.1,\n",
    "#                               patience=10, min_lr=1e-6, verbose=1)\n",
    "\n",
    "batch_size = 128\n",
    "epochs = 200\n",
    "\n",
    "if data_augmentation:\n",
    "    # datagen\n",
    "    datagen = ImageDataGenerator(\n",
    "        featurewise_center=False,  # set input mean to 0 over the dataset\n",
    "        samplewise_center=False,  # set each sample mean to 0\n",
    "        featurewise_std_normalization=False,  # divide inputs by std of the dataset\n",
    "        samplewise_std_normalization=False,  # divide each input by its std\n",
    "        zca_whitening=False,  # apply ZCA whitening\n",
    "        rotation_range=15,  # randomly rotate images in the range (degrees, 0 to 180)\n",
    "        width_shift_range=0.1,  # randomly shift images horizontally (fraction of total width)\n",
    "        height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)\n",
    "        horizontal_flip=True,  # randomly flip images\n",
    "        vertical_flip=False, # randomly flip images\n",
    "    ) \n",
    "    # (std, mean, and principal components if ZCA whitening is applied).\n",
    "    # datagen.fit(x_train)\n",
    "    print('train with data augmentation')\n",
    "    history = vgg.fit_generator(generator=datagen.flow(x_train, y_train, batch_size=batch_size),\n",
    "                                epochs=epochs,\n",
    "                                callbacks=[reduce_lr],\n",
    "                                validation_data=(x_val, y_val)\n",
    "                                )\n",
    "else:\n",
    "    print('train without data augmentation')\n",
    "    history = vgg.fit(x_train, y_train, \n",
    "                      batch_size=batch_size, epochs=epochs, \n",
    "                      callbacks=[reduce_lr],\n",
    "                      validation_data=(x_val, y_val)\n",
    "                      )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot loss and acc \n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "plt.xlabel('epoch')\n",
    "plt.ylabel('Loss value')\n",
    "plt.legend(['train', 'test'], loc='upper left')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(history.history['acc'])\n",
    "plt.plot(history.history['val_acc'])\n",
    "plt.xlabel('epoch')\n",
    "plt.ylabel('acc value')\n",
    "plt.legend(['train', 'test'], loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 6s 588us/step\n",
      "evaluate loss:0.580091 acc:0.923200\n"
     ]
    }
   ],
   "source": [
    "loss, acc = vgg.evaluate(x_test, y_test)\n",
    "print('evaluate loss:%f acc:%f' % (loss, acc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
